package com.laiqilin.service.impl;

import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.laiqilin.entity.LoginUser;
import com.laiqilin.entity.User;
import com.laiqilin.service.UserService;
import com.laiqilin.mapper.UserMapper;
import org.springframework.stereotype.Service;

import java.util.Objects;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

    /**
     * 根据用户名和密码查找用户
     *
     * @param username 用户名
     * @param password 密码
     * @return 登录用户信息
     */
    @Override
    public LoginUser findById(String username, String password) {
        LoginUser loginUser = new LoginUser();

        // 查询用户
        User user = this.getOne(new QueryWrapper<User>().eq("username", username));
        if (user != null) {
            // 校验密码
            if (StrUtil.isNotBlank(password)) {
                String hashedPassword = SecureUtil.md5(password);
                if (hashedPassword.equals(user.getPassword())) {
                    loginUser.setUser(user);
                    loginUser.setUserId(user.getId().toString());
                    return loginUser;
                }
            }
        }

        return null; // 用户名或密码错误
    }

    /**
     * 保存用户信息
     *
     * @param user 用户信息
     * @return 是否保存成功
     */
    @Override
    public boolean saveUserMsg(User user) {
        if (user != null && StrUtil.isNotBlank(user.getPassword())) {
            // 加密密码
            String hashedPassword = SecureUtil.md5(user.getPassword());
            user.setPassword(hashedPassword);
        }
        return this.save(user); // 保存用户信息
    }
}
